// 引入 用来发送请求的方法
import { request } from "../../request/index"
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({
  data: {
    // 左侧菜单数据
    leftMenuList: [],
    // 右侧的商品数据
    rightContent: [],
    // 被点击的左侧菜单
    currentIndex: 0,
    // 右侧内容的滚动条距离顶部的距离
    scrollTop: 0
  },
  // 接口的返回数据
  Cates: [],

  onLoad: function (options) {
    // 先判断一下本地存储中有没有旧数据
    // 没有旧数据，发送请求，有就用本地存储的

    // 1 获取本地存储中的数据 （小程序中也是存在本地存储 技术）
    const Cates = wx.getStorageSync('cates');
    if (!Cates) {
      this.getCates();
    } else {
      // 有旧的数据
      if (Date.now() - Cates.time > 1000 * 60 * 5) {
        // 过期，重新发送请求
        this.getCates();
      } else {
        // 使用旧数据
        this.Cates = Cates.data;
        // console.log(Cates);
        // 构造左侧的大菜单数据
        let leftMenuList = this.Cates.map(v => v.cat_name);
        // 构造右侧的商品数据
        let rightContent = this.Cates[0].children;
        this.setData({
          leftMenuList,
          rightContent
        })
      }
    }

  },
  // 获取分类数据
  async getCates() {
    // request({
    //   url: '/categories'
    // }).then(res=> {
    //   this.Cates = res.data.message;

    //   // 把接口的数据存入到本地存储中
    //   wx.setStorageSync('cates', {time:Date.now(), data:this.Cates});

    //   // 构造左侧的大菜单数据
    //   let leftMenuList = this.Cates.map(v=>v.cat_name);
    //   // 构造右侧的商品数据
    //   let rightContent = this.Cates[0].children;
    //   this.setData({
    //     leftMenuList,
    //     rightContent
    //   })
    // })

    // 使用es7的 async await 发送请求
    const res = await request({ url: '/categories' });
    this.Cates = res;

    // 把接口的数据存入到本地存储中
    wx.setStorageSync('cates', { time: Date.now(), data: this.Cates });

    // 构造左侧的大菜单数据
    let leftMenuList = this.Cates.map(v => v.cat_name);
    // 构造右侧的商品数据
    let rightContent = this.Cates[0].children;
    this.setData({
      leftMenuList,
      rightContent
    })

  },

  // 左侧菜单的点击事件
  handleItemTap(e) {
    // 获取被点击的标题索引
    const { index } = e.currentTarget.dataset;

    let rightContent = this.Cates[index].children;
    this.setData({
      currentIndex: index,
      rightContent,
      // 重新设置 右侧内容的scroll-view标签的距离顶部的距离
      scrollTop: 0
    })
  }
})